리다이렉트 하는 기호 바로 앞에 파일 디스크립터를 지정할 수 있다.
ls -al badfile 2> err.txt 1> out.txt
두 개 이상의 디스크립터가 동일한 파일(디스크립터)로 리다이렉트 하도록 하고 싶을 경우
&> 기호를 사용한다.
ls -al badfile &> allOut.txt
하지만 bash 쉘은 기본적으로 STDERR를 STDOUT보다 높은 우선순위를 부여한다.
따라서 표준 출력과 표준 오류가 흩어져 있기 보다는 우선순위에 따라 묶이게 된다.
스크립트 내부에서의 리다이렉트(출력)
- 각 줄을 임시로 리다이렉트
- 스크립트에서 모든 명령을 지속적으로 리다이렉트
일시 리다이렉트echo "This is an error Message" >&2
echo "This is an output Message" >&1
지속적으로 리다이렉트exer 명령어를 통해 스크립트가 실행되는 동안 특정한 파일 디스크립터를 리다이렉트
스크립트 내부에서의 리다이렉트(입력)
exec 0< input.txt
count=1
while read line; do
echo "Line #$count: $line"
count=$[ $count + 1 ]
done